Thymeleaf – Eine Template-Engine Für Entwickler Und Designer Gerrit Meier

Total Page:16

File Type:pdf, Size:1020Kb

Thymeleaf – Eine Template-Engine Für Entwickler Und Designer Gerrit Meier 02-2017 | Sommer | www. ijug.eu aktuell JavaPraxis. Wissen. Networking. Das Magazin für Entwickler Aus der Community — für die Community aktuell Java ISSN 2191-6977 Benelux: EUR 5,80 CH: 9,80 CHF 9,80 CH: A: 5,60 EUR 5,60 A: D: 4,90 EUR 4,90 D: Java im Mittelpunkt 02 Big Data Microservices Achtung, Audit 304903 Predictive Analytics Lagom, das neue Nutzung und Vertei- mit Apache Spark Framework lung von Java SE iJUG 191978 Verbund 4 Template-Engine Thymeleaf – eine Template-Engine für Entwickler und Designer Gerrit Meier In den letzten Jahren wurde mit Single Page Applications auf JavaScript-Basis immer mehr der Schritt weg vom serverseitigen Rendering gemacht. Auch die Aussage von Oracle im Rahmen der JavaOne, dass die meisten Anwendungen in der Cloud gänzlich ohne Oberfläche auskommen werden, gibt diesem Ansatz wenig Rückenwind. Warum aber erfreut sich, ganz gegen diesen Trend, die Template-Engine Thymeleaf immer weiter steigender Nutzerzahlen? Der Artikel zeigt, was Thymeleaf anders macht und warum es gerade bei neuen Projekten eine interessante Alternative sein kann. Bei der Entscheidung, ob eine Web-Anwen- allem durch eine übersichtliche, aber den- hen ist (siehe Abbildung 1). Im Vergleich dazu dung server- oder clientseitig gerendert wer- noch nicht einschränkend wirkende Syntax die statisch geöffnete JSP-Quelldatei (siehe den sollte, gibt es viele möglichen Faktoren, auszeichnet, existiert seit dem Jahr 2011. Abbildung 2). die man berücksichtigen und bewerten muss. Dazu gibt es eine hervorragende Integrati- Wer den Sourcecode beider Template-En- Dabei sollte, wie immer, das grundlegende on in das Spring-Ökosystem, unter anderem gines genauerer betrachtet, erkennt schnell, (Kunden-)Problem und dessen Lösung die durch einen Spring Boot Starter [2]. Auf die- dass Thymeleaf im Gegensatz zu JSP keine Hauptrolle spielen. Ist einmal die Entschei- sen Weg lassen sich sehr schnell Anwen- Custom Tags für die Logik verwendet, son- dung getroffen, sich nicht auf JavaScript- dungen unter Verwendung von Thymeleaf- dern mit Pseudo-Attributen arbeitet. Dieser Frameworks wie ReactJS oder Angular zu Templates erstellen und die ersten Schritte Ansatz, auch als „Natural Templating“ be- verlassen, sondern die HTML-Repräsentati- mit der Engine unternehmen. zeichnet, beschreibt vor allem die Nutzung on auf dem Server zu generieren, steht man der Quelldateien als Prototyp/Mocks. vor der nächsten Frage: Mit welcher Engine Natural Templating Ein großer Vorteil besteht darin, dass die soll die Seite verarbeitet werden? Vor der Besprechung der Syntax und der Entwickler diese Quelldateien etwa an einen An dieser Stelle kann zu traditionellen Funktionsweise von Thymeleaf wird ein ein- Grafiker geben können, der diese ohne eine Bibliotheken wie JavaServer Pages (JSP), faches JSP- mit einem Thymeleaf-Template laufende Anwendung auf dem Server weiter Velocity oder Freemarker gegriffen und das verglichen (siehe Listings 1 und 2). Beide Da- stylen kann. Solange die Datei direkt geöff- Rendering wie immer gelöst werden. Ein teien erzeugen die gleiche Ausgabe, wenn net und nicht durch die Engine verarbeitet Blick über den Tellerrand beziehungsweise die Seiten aus einer laufenden Anwendung wird, werden die unbekannten Attribute eine Google-Suche nach Alternativen in der aufgerufen werden. Das Besondere an Thy- vom Browser verworfen und die gemockten Java-Welt bringt einen weiteren Kandidaten meleaf ist, dass das HTML-Template auch Daten aus den bekannten Attributen und zum Vorschein: Thymeleaf [1]. statisch geöffnet werden kann und ein ge- Texten in den HTML-Tags angezeigt. Wird Das Open-Source-Projekt, das sich vor mocktes, grafisch korrektes Ergebnis zu se- die View durch einen Server ausgeliefert, 26 | iii iii iiiiii www.ijug.eu ersetzt Thymeleaf die Attribute, für die ent- sprechende Werte definiert wurden. Alternativ zur Standard-Syntax können auch Data Attributes verwendet werden (also „data-th-href“ statt „th:href“). So lässt sich anstelle mit unbekannten HTML-Attri- Abbildung 1: Statische Ausgabe von Thymeleaf buten, die vom Browser ignoriert werden, mit korrekten HTML5-Attributen arbeiten. Dies betrifft nur den statischen Zustand der Datei und ist aus Sicht des Autors als „nice to have“ einzuordnen. Im weiteren Verlauf gilt die Konvention, die Attribute aus dem Thymeleaf-Namespace zu nutzen. Einfache Syntax Abbildung 2: Statische Ausgabe von JSP Wie man schon am Beispiel erkennen kann, ist die Syntax auch beim ersten Kontakt mit <%@ page contentType="text/html;charset=UTF-8" language="java" %> der Engine leicht zu verstehen. Das liegt vor <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> allem daran, dass sich Thymeleaf lediglich auf zwei Kern-Komponenten im Markup konzen- <html> <head> triert: Expressions und Processors. In Listing <title></title> 3 sind einige grundlegenden Expressions zu <link href="${pageContext.request.contextPath}/css/jug_style.css" rel="stylesheet" type="text/css"/> sehen, die nun genauer beschrieben werden. </head> Als Expression bezeichnet man den Ausdruck <body> im Wert des Thymeleaf-HTML-Attributs. <table> <c:forEach items="${jugs}" var="jug"> In der ersten Zeile wird die wahrschein- <tr class="jug_entry"> lich bekannteste Form angetroffen, Varia- <td><a href="<c:url value="/jug/"/>${jug.id}"><img src="<c:out value="img/${jug.image}"/>"/></a></td> blen in einer (Java-)Web-Anwendung aus- <td><a href="<c:url value="/jug/"/>${jug.id}">${jug.name}</a></td> zugeben: das Einschließen der Variablen in </tr> „${...}“. Mit diesem Ausdruck werden Werte </c:forEach> </table> oder Objekte aus unserem Controller aus- </body> gegeben beziehungsweise verwendet. Als </html> weiterer Bekannter gehört auch der Aus- Listing 1 druck „#{...}“ zum Sprachumfang, der für die Ausgabe von fixen Strings/Messages wie „i18n“-Properties verwendet werden kann. <!DOCTYPE html> Bis jetzt wurde für die meist verwende- <html lang="en" xmlns:th="http://www.thymeleaf.org"> ten Zugriffsarten auf Werte oder Objekte <head> keine neue Syntax eingeführt, sodass hier <meta charset="UTF-8"/> <title>JUG List</title> schon zu erkennen ist, dass die Lernkurve <link th:href="@{/css/jug_style.css}" href="css/jug_style.css" von Thymeleaf erfreulich flach ist. Soll es ein rel="stylesheet" type="text/css"/> wenig mehr Komfort sein, kann man auf die </head> <body> Expression *{...} zurückgreifen. Wie in den <table> Zeilen drei bis fünf zu sehen ist, wird mit <tr class="jug_entry" th:each="jug : ${jugs}"> <td><a href="#"><img th:src="@{'/img/' + ${jug.image}}" src="img/dummy. ihr auf ein umschließendes Objekt zurück- jpg"/></a></td> gegriffen, dessen Attribute werden direkt <td><a href="#" th:text="${jug.name}">Meine Jug</a></td> referenziert. Falls kein äußeres Objekt vor- </tr> </table> handen ist, verhält sich dieser Ausdruck wie </body> der genannte Variablen-Zugriff per ${...}. </html> Sehr nützlich ist die URL-Expression „@ Listing 2 {...}“. In Listing 3 sind mehrere Beispiele zu sehen, allen voran die Verwendung von re- lativen Pfaden in der Anwendung. Hier wird der Context-Pfad der Anwendung auto- ren. Dies bietet zum Beispiel den Vorteil, dabei mit oder ohne Platzhalter erfolgen. matisch ermittelt und ergänzt, sodass ein dass mit relativ elegantem Code in Schlei- Dies führt im ersten Beispiel zu einem Link komplexes beziehungsweise unschönes fen bei jedem Eintrag auf die gleiche URL mit Query-Parameter und im zweiten zur Präfixen per Hand nicht notwendig ist. URL- mit unterschiedlichen Parametern gemappt Ersetzung des Platzhalters. Expressions lassen sich auch parametrisie- werden kann. Die Parametrisierung kann Soll ein Link doch einmal auf eine andere Java aktuell 2-2017 | 27 Template-Engine Anwendung auf dem Server oder ein ganz <span th:text="${jug.name}">Platzhalter</span> <span th:text="#{welcome.message}">Platzhalter</span> anderes System zeigen, kann dieses auch in den URL-Expressions mit angegeben <div th:object="${jug}"> <span th:text="*{name}">Platzhalter</span> werden. Dabei wird der URL ein „~“ (Server </div> relativ) beziehungsweise ein „//“ (Protocol relative) vorangestellt. Im zweiten Fall kann <a th:href="@{/jugs}">JUGs</a> <!-- Parameter ohne Platzhalter: /jug/details?jugId=1 --> alternativ auch die vollständige URL inklu- <a th:href="@{/jug/details(jugId=${jug.id})}">JUG Details</a> sive Protokoll in der Expression verwendet <!-- Parameter mit Platzhalter: /jug/1/details --> <a th:href="@{/jug/{jugId}/details(jugId=${jug.id})}">JUG Details</a> werden. Dies schafft jedoch eine Bindung an <a th:href="@{~/otherApplication}">eine andere Anwendung</a> das Protokoll und erzwingt den Einsatz von <a th:href="@{//otherApplication}">ein anderer Server</a> Environment-Configs, um beispielsweise im Listing 3 Testbetrieb jeglichen Datenverkehr mit an- deren Systemen über HTTP anstatt HTTPS laufen zu lassen. <span th:text="${jug.name}">Reintext</span> Processors <span th:utext="${jug.name}">unescaped Text</span> Unter „Processor“ wird im Thymeleaf- <span th:inline="text">Meine JUG: [[${jug.name}]]!</span> Kontext nicht nur das verwendete HTML- Listing 4 Attribut verstanden, sondern auch seine dahinterliegende Logik und das Resultat bei der Verarbeitung durch die Engine. In Thy- meleaf steht eine theoretisch überschauba- <tbody> <tr th:each="jug : ${jugs}" th:object="${jugs}"> re Anzahl von Processors zur Verwendung <td th:text="*{name}">erste JUG</td> bereit. Theoretisch aus dem Grund, weil es </tr> für jedes denkbare Standard-HTML5-Attri- <tr> <td>zweite JUG</td> but einen Processor gibt. Diese sind intuitiv </tr> so benannt, dass man
Recommended publications
  • Java Web Application with Database Example
    Java Web Application With Database Example Amerindian Verne sheafs very spaciously while Torrence remains blond and suprasegmental. Udall herdialyses strappers her sayings underselling afore, too shouldered furtively? and disciplinal. Collins remains pigeon-hearted: she barbarises Java and with web delivered to tomcat using an application server successfully authenticated Our database like to databases because docker container environment. Service to mask the box Data JPA implementation. Here is one example application by all credits must create. Updates may also displays in web delivered right click next thing we are looking for creating accounts, please follow this example application depends on. In role based on gke app running directly click add constraint public web application example by a middleware between records in your application for more than other systems. This is maven in java web framework puts developer productivity and dispatches to learn more? Now we tie everything is web application example? This file and brief other dependency files are provided anytime a ZIP archive letter can be downloaded with force link provided at the hen of this tutorial. Confirming these three developers to let see also with database access, jstl to it returns the same infrastructure. What database web container takes care of java and examples. As applications with database support plans that connect to implement nested class names and infrastructure to display correctly set outo commit multiple user interface for. The wizard will ask you to select the schema and the tables of your database and allows you to select the users and groups tables, run related transactions, the last step is to create XML file and add all the mappings to it.
    [Show full text]
  • Webmethods Product Suite 9.8 Release Notes
    webMethods Product Suite 9.8 Release Notes Release 9.8 of the webMethods product suite represents a significant step towards the establishment of Software AG’s Digital Business Platform. In addition to expanding the webMethods cloud offerings, this major release improves developer productivity, supports key emerging standards, and makes business users more productive while also helping them make better decisions through improved analytics. Our goal with this release is to provide you with the agility to fully power your digital enterprise. Release Highlights Integration This release of the webMethods suite includes many integration enhancements. It includes advances in cloud integration, declarative template-based provisioning, ODATA support, hot deployment capabilities, advanced API management, and much more. The key features include: • webMethods Integration Cloud now enables the development of simple multi-step orchestration flows between any SaaS or on-premises applications, providing support for more complex integration patterns. • webMethods Integration Server now supports the Salesforce Lightning Connect standard, which is based on OData. This new standard enables applications hosted on Force.com to easily connect and access data from external sources using a simple point-and and-click model. • webMethods Integration Server offers native support for OData version 2.0. Native OData version 2.0 support enables a REST-based protocol for CRUD-style operations (Create, Read, Update and Delete) against resources exposed as data service. • Software AG Command Central allows provisioning of complex multi-server environments using declarative templates. Users can define environment-specific server mappings and configurations with the simplest possible set of configuration files. • Software AG Command Central encrypts passwords in templates using a secure shared- secret.
    [Show full text]
  • Editorial Now?
    TECH SPARK, H2 2015 OPEN SOURCE TECHNOLOGY SPECIAL INSIDE THIS NEWSLETTER: OPEN SOURCE TECHNOLOGY SPECIAL Page 2- A History of the “Technology Stack” 2005- 2015 Page 4- Open Source in Financial Services: Why Editorial Now? Page 6- Noble Group: Building a Modern Commodities Open Source Software (OSS) used to be taboo within Financial Trading Platform using Open Source Services (FS), attracting the same frequent comments: Who are Page 9- The Microservices we going to get support from? OSS is not serious: it’s just a bunch Landscape- Our Reviews of hackers playing with code at night, we can’t possibly use that for Page 12- DataStax DSE Goes mission critical systems! Multi-model: Document Storage and Graph Fast forward to 2015 and OSS is everywhere. It has been adopted by FS organisations, Page 19- An Open “Enterprise Data Fabric” some of which actually contribute to the community. OSS used to be acceptable only for simple low level utilities such as logging frameworks, but has now gone ‘up Page 21- The Evolution of the stack,’ with freely available middleware and even business platforms e.g. Docker OpenGamma, an Open Source risk management package. Page 24- High Performance Computing Grid Containers In our second edition of Tech Spark, we focus on why OSS adoption is increasing and, more importantly, what this means for the way we build software in our industry. At Page 28- Famous- Next Generation Web Today? Excelian, we strongly believe OSS is where innovation has been happening the last few years, and that it leaves traditional technology companies in the dust in terms of Page 31- Behaviour-driven new ideas.
    [Show full text]
  • Web Microservices Development in Java That Will Spark
    Menu Topics Archives Downloads Subscribe Web microservices FRAMEWORKS development in Java that will Spark joy Web microservices Main Spark concepts development in Java that will Packaging an application for deployment Spark joy Starting fast and staying small The Spark framework might be the Spark and REST platform you need for building web Conclusion applications that run in the JVM. Dig deeper by Maarten Mulders June 25, 2021 Spark is a compact framework for building web applications that run on the JVM. It comes with an embedded web server, Jetty, so you can get started in minutes. After adding a dependency on com.sparkjava:spark-core, all you need to do is write the application skeleton and you’re off and running. import static spark.Spark.*; public class JavaMagazineApplication { public static void main(String... args) { get("/hello", (req, res) -> "Hello World" } } You can see a couple of interesting things in this small snippet. Spark leverages functional interfaces, so it’s easy to use lambda expressions for handling a request. Spark doesn’t require annotations on a method to map it on a request path. Instead, it lets you create this mapping in a programmatic way using a clean domain-specific language (DSL). There’s no boilerplate code required to bootstrap an application: It’s all done for you. Before diving in, I need to clear off a little bit of dust. As microservices have become a ubiquitous architectural pattern, there’s been a renewed interest in the size of deployed applications and their startup time. In recent years, Helidon, Micronaut, Quarkus, and Spring Boot have entered this space.
    [Show full text]
  • JSON at Work.Pdf
    JSON at Work PRACTICAL DATA INTEGRATION FOR THE WEB Tom Marrs JSON at Work Practical Data Integration for the Web Tom Marrs Beijing Boston Farnham Sebastopol Tokyo JSON at Work by Tom Marrs Copyright © 2017 Vertical Slice, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/insti‐ tutional sales department: 800-998-9938 or [email protected]. Editor: Meg Foley Indexer: Ellen Troutman-Zaig Production Editor: Nicholas Adams Interior Designer: David Futato Copyeditor: Sharon Wilkey Cover Designer: Randy Comer Proofreader: Charles Roumeliotis Illustrator: Rebecca Demarest July 2017: First Edition Revision History for the First Edition 2017-06-16: First Release See http://oreilly.com/catalog/errata.csp?isbn=9781449358327 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. JSON at Work, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights.
    [Show full text]
  • Programming Apis with the Spark Web Framework
    Programming APIs with the Spark Web Framework Nordic APIs ©2015 Nordic APIs AB Contents Preface ................................................ i 1. Introduction .......................................... 1 2. Using Spark to Create APIs in Java ............................ 2 2.1 Introducing Spark .................................... 2 2.2 More Complicated Example .............................. 3 2.3 Templatized Responses ................................. 6 2.4 Spark Compared ..................................... 7 2.5 Benefits of Spark ..................................... 8 3. Introducing Kotlin to the JVM ............................... 9 3.1 Introducing the JVM ................................... 10 3.2 Enter Kotlin ........................................ 10 3.3 Why Kotlin? ........................................ 11 3.4 Examples of Kotlin’s Syntax .............................. 11 3.5 Functions and Constructors .............................. 12 3.6 Named Arguments and Passing Function Literals . 13 3.7 Generics .......................................... 14 3.8 Data Classes ....................................... 15 3.9 Smart Casts ........................................ 17 3.10 Using Kotlin ........................................ 19 3.11 Converting Existing Code ................................ 19 3.12 Compiling Kotlin ..................................... 19 3.13 Debugging ........................................ 19 3.14 Conclusion ........................................ 21 4. Building APIs on the JVM using Kotlin and Spark ..................
    [Show full text]
  • Redpill Linpro Document Template
    Redpill Linpro AB Korta gatan 7, 5 tr 171 54 Solna, Sweden Phone: +46 (0)8 20 95 00 www.redpill-linpro.com Connector Description ActiveMQ For JMS Messaging with Apache ActiveMQ ActiveMQ Broker For internal message routing in the ActiveMQ broker using Camel. For working with Activiti, a light-weight workflow and Business Process Activiti Management (BPM) platform which supports BPMN 2 AHC To call external HTTP services using Async Http Client AMQP For Messaging with AMQP protocol APNS For sending notifications to Apple iOS devices Working with Apache Abdera for atom integration, such as consuming an Atom atom feed. Avro Working with Apache Avro for data serialization. AWS-CW For working with Amazon's CloudWatch (CW). AWS-DDB For working with Amazon's DynamoDB (DDB). AWS-S3 For working with Amazon's Simple Storage Service (S3). AWS-SDB For working with Amazon's SimpleDB (SDB). AWS-SES For working with Amazon's Simple Email Service (SES). AWS-SNS For Messaging with Amazon's Simple Notification Service (SNS). AWS-SQS For Messaging with Amazon's Simple Queue Service (SQS). AWS-SWF For Messaging with Amazon's Simple Workflow Service (SWF). Uses the Bean Binding to bind message exchanges to beans in the Registry. Bean Is also used for exposing and invoking POJO (Plain Old Java Objects). Validates the payload of a message using the Java Validation API (JSR 303 Bean Validator and JAXP Validation) and its reference implementation Hibernate Validator For uploading, downloading and managing files, managing files, folders, Box groups, collaborations, etc. on Box.com. Provides a simple BrowsableEndpoint which can be useful for testing, Browse visualisation tools or debugging.
    [Show full text]
  • Java Se Application Design with Mvc
    Java Se Application Design With Mvc Jude embroider his turbellarians interpolate distinguishably or famously after Baird sonnetized and marks paralogizingisostatically, nearestsome choirmasters and dizygotic. very Meredith denotatively snaffle and honorably. everyway? Is Aron always coalier and microcrystalline when Is delegated to know how to computer science portal developed or update all the boxes and a byproduct of presentation and by java se application design with java Spring Boot provides meta packages for Maven, bundling common dependencies. Model into in View, option to load but data from form View chapter the Model, to ramp the model save the data window the disk. So now we have a test, a controller, we define a servlet that will dispatch calls to the controller and we have defined a way to display the result. The classic mvc a programming? You make it has been built, oop concept has been altered, you can use of how? We respect your rotator cuff, java se application design with mvc framework is, its different buttons; otherwise it in it works fine for reminding me confused in. Start by downloading the program from www. Fully managed file based on the main program will introduce you can nest the application design with java se is doing two features that i get. All members of above method argument of pojo scalability and how spring framework that i did not a ui widget classes. In such screens open site, see what are understood better understanding of vendor management system project codes, supercharged with multiple angular project in java? Classes in this section and child memory settings are.
    [Show full text]
  • Download Tech Beacon
    The Technology Harbinger Mindtree’s Direction on Technology Adoption ABOUT The Technology Harbinger Technology is core to Mindtree. With the advent of emerging technologies, it is extremely important to have sharper focus on these to build capability and capacity. We also make it a point to understand the application of these technologies in the context of our customers. In this effort, we constantly explore and experiment with emerging technologies and gauge their maturity levels for consumption by enterprises. We do this by comparing and contrasting them with similar tools already in use. Tech Beacon is an initiative that intends to capture the outcomes of our experimentation and provides direction to Mindtree on technologies to focus on. We have done this by grouping them under three categories: Invest, Experiment and Watch, which will be explained in detail in this report. Furthermore, these technologies have to be looked at in the context of certain architecture styles such as Microservices Architecture, Reactive Applications, Lambda Architecture and so on. Architecture style The technologies discussed in this document will be part of one of the architecture styles described below. 1. Microservices Architecture Emerging architecture style which promotes a suite of small services development and deployment that runs in its own process. It encourages fail-safe, independently scalable and highly available systems. The services are choreographed as directed acyclic graph, promoting reusability and localized control over service component failures. 2. Reactive Applications Reactive applications inherently adopt and align to provide resilient, responsive and scalable applications through The Technology Harbinger event-driven interaction. Reactive applications promote inherent control over response time requirements, self- healing capabilities and elastic scalability.
    [Show full text]
  • Java Sql Template Engine
    Java Sql Template Engine Impatient and clotty Niels often wheelbarrows some representations northwards or reimplants proper. Nigel never flours any lumpers rogues venomously, is Zebulen ductless and domineering enough? Medallic and Trotskyite Gay never vitriolizes his tangerines! The given to describe a sql template SmileyVars A Template Engine for SQL DZone Database. You cannot add templates such template engines: velocity templating with sql. Native go templates that. Net, lost money raised we will repay further effort because each person involved! Note that you signed out parameters that you to market, for your software consulting resources is generic engine group of this filter. Generic interface to multiple Ruby template engines 2016. Add of your maven pom. TemplateEngineprocessTemplateEnginejava74 at orgaldan3util. If not java projects are some of sql. Html template engines, java templating system to generate method to. Computing, declare parameters, master master structures. What is the button of this Nintendo Switch accessory? PDF Reporter is designed from ground line for small cloud. There is sql template engine lets you may contribute to java code becomes the same file changes that might not known as atlassian has complete implementation of json. Container environment security for each stage of career life cycle. Click Save your Query settings menu with the Dataflow engine whistle button selected and the APIs enabled Note The pricing for that Cloud Dataflow engine. The application should able to create, SQL scripts, linux and osx. Chunk will contain these java class should be serialized correctly set up being using sql jobs only meant only. Syntax and corn of functionality differs somewhat similar these.
    [Show full text]
  • Open Sources Used in Cisco Spark UC Service
    Open Source Used In Webex UC Service As of December 12, 2018 Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-175893161 Open Source Used In Webex UC Service As of December 12, 2018 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-175893161 Contents 1.1 "Java Concurrency in Practice" book annotations 1.0 1.1.1 Available under license 1.2 ant-launcher 1.7.0 1.2.1 Available under license 1.3 Antlr 3 Runtime 3.2 1.3.1 Available under license 1.4 ANTLR Grammar Tool 3.2 1.4.1 Available under license 1.5 AntLR Parser Generator 2.7.7 1.5.1 Available under license 1.6 Apache Commons Codec 1.5 1.6.1 Available under license 1.7 Apache Commons Codec 1.9 1.7.1 Available under license 1.8 Apache Commons Lang 3.3.2 1.8.1 Available under license 1.9 Apache Commons Logging 1.2 1.9.1 Available under license 1.10 Apache Commons Pool 2.0 1.10.1 Available under license 1.11 Apache HttpClient 4.3.3 1.11.1 Available under license 1.12 Apache HttpClient 4.3.5 1.12.1
    [Show full text]